perm filename FINC.FAI[T,LCS] blob
sn#015756 filedate 1972-12-04 generic text, type T, neo UTF8
ENTRY FINC
TITLE FINC - Increment file name
RET←1 ;WHERE TO RETURN RESULT
PNTR←2 ;POINTER TO WORD
CHAR←3 ;A SIXBIT CHARACTER
P←17 ;A PDL
;CALLING SEQUENCE
; PUSH P,SIXBIT_FILE_NAME
; PUSHJ P,FINC
;
;SETS .SKIP. TO -1 IF INCREMENT OVERFLOWS
; CLOBBERS 2-3
;
;FOR SAIL:
;EXTERNAL INTEGER PROCEDURE FINC(INTEGER SIXBIT_FILE_NAME)
EXTERNAL .SKIP.
FINC: MOVE RET,-1(P)
MOVE PNTR,[POINT 6,1,35];SET UP TO LOOK AT LOWEST CHARACTER
SETZM .SKIP.
FINC1: LDB CHAR,PNTR
JUMPE CHAR,FINC3 ;IF ZERO, TRY NEXT
CAIN CHAR,'9' ;IS IT A '9'
JRST [ MOVEI CHAR,'0' ;SET IT TO '0' AND TRY NEXT CHARACTER
JRST FINC3]
CAIN CHAR,'Z' ;IS IT A 'Z'
JRST [ MOVEI CHAR,'A' ;SET IT TO 'A' AND TRY NEXT CHARACTER
JRST FINC3]
FINC2: ADDI CHAR,1
DPB CHAR,PNTR
FINCRT: SUB P,[2,2] ;FLUSH RET PARAMETER
JRST @2(P) ;AND RETURN
FINC3: DPB CHAR,PNTR ;PUT NEW CHARACTER IN
CAME PNTR,[POINT 6,1,5] ;ARE WE GOING TO RUN OFF THE END
JRST [ ADD PNTR,[XWD 60000,0] ;NO, DECREMENT BYTE POINT TO
JRST FINC1] ;LOOK AT CHARACTER TO THE RIGHT
;AND TRY AGAIN
TRNE RET,77 ;IS THERE ROOM TO SHIFT RIGHT?
JRST [ SETOM .SKIP. ;NO! RETURN WITH ERROR SET
JRST FINCRT]
LSH RET,-6
JRST FINC2
END